package org.example.cicdi.service.impl.org;

import org.example.cicdi.enums.EnumWhiteTableAnnotation;
import org.example.codegenerate.modelext.WebVo.annotation.table.TVo;
import org.example.codegenerate.modelext.WebVo.domian.table.TableVoDomain;
import org.example.codegenerate.modelext.WebVo.domian.table.WebModelVo;
import org.springframework.stereotype.Service;

@Service
public class TVoAnnotationServiceImpl implements TableAnnotationService {
/*
	@Autowired
	private CodeServiceExt codeServiceExt;*/
	@Override
	public String getCode() {
		return EnumWhiteTableAnnotation.TableDomain.getCode();
	}

	@Override
	public WebModelVo handleTableVo(Class<?> cl, WebModelVo model) {
		TVo vo = cl.getAnnotation(TVo.class);
		if (vo == null) {
			return model;
		}
		
		if (model == null) {
			model = new WebModelVo();
		}
		
		TableVoDomain tableVoDomain = model.getTableVoDomain();
		if (tableVoDomain == null) {
			tableVoDomain = new TableVoDomain();
			model.setTableVoDomain(tableVoDomain);
		}
		
		tableVoDomain.setEntityName(vo.entityName());
		tableVoDomain.setEnumTableType(vo.enumTableType());
		tableVoDomain.setIsTree(vo.isTree());
		tableVoDomain.setQueryMode(vo.queryMode());
		tableVoDomain.setRelationType(vo.relationType());
		tableVoDomain.setScroll(vo.scroll());
		tableVoDomain.setTableName(vo.tableName());
		tableVoDomain.setTableTxt(vo.tableTxt());
		tableVoDomain.setTabOrderNum(vo.tabOrderNum());
		tableVoDomain.setTreeFieldname(vo.treeFieldname());
		tableVoDomain.setTreeIdField(vo.treeIdField());
		tableVoDomain.setTreeParentIdField(vo.treeParentIdField());
		tableVoDomain.setForeignKeys(vo.foreignKeys());
		tableVoDomain.setForeignMainKeys(vo.foreignMainKeys());
		
		return model;
	}

}
